/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package org.trandio.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.naming.NamingException;
import org.trandio.model.ActividadpypVO;
import org.trandio.util.ConexionDb;

/**
 *
 * @author root
 */
public class ActividadpypDAO implements ActividadpypInterface {

    @Override
    public void guardarActividadpyp(ActividadpypVO actividadpypVO) throws SQLException, NamingException {
        ConexionDb con = new ConexionDb();
        Connection conn;
        conn = con.traerConexion();

        String sqlAdiciona = "INSERT INTO tb_actividadpyp("
                + "codigo, descripcion, id_sexo, id_programa, id_fincn, id_finpx,"
                + "id_actcups, id_actsoat, frecuencia, habilitada, edad_inicio,edad_final,tiempo,id_actividad,id_diagnostico,cantidad_sesion)"
                + "VALUES (?, ?, ?, ?, ?, ?,?, ?, ?, ?, ?,?,?,?,?,?)";


        PreparedStatement stmt = conn.prepareStatement(sqlAdiciona);

       int habilitada = (actividadpypVO.isHabilitada() == true) ? 1 : 0;

        stmt.setString(1, actividadpypVO.getCodigo());
        stmt.setString(2, actividadpypVO.getDescripcion());
        stmt.setInt(3, actividadpypVO.getSexo());
        stmt.setInt(4, actividadpypVO.getPrograma());
        stmt.setInt(5, actividadpypVO.getIdfincn());
        stmt.setInt(6, actividadpypVO.getIdfinpx());
        stmt.setInt(7, actividadpypVO.getIdcups());
        stmt.setInt(8, actividadpypVO.getIdsoat());
        stmt.setInt(9, actividadpypVO.getFrecuencia());
        stmt.setInt(10, habilitada);
        stmt.setString(11, String.valueOf(actividadpypVO.getEdadini()) + actividadpypVO.getMedida1());
        stmt.setString(12, String.valueOf(actividadpypVO.getEdadfin()) + actividadpypVO.getMedida2());
        stmt.setString(13, String.valueOf(actividadpypVO.getCantidad()) + actividadpypVO.getTiempo());
        stmt.setInt(14, actividadpypVO.getIdactividad());
        stmt.setInt(15, actividadpypVO.getIddiagnostico());
        stmt.setInt(16, actividadpypVO.getCantidadsesion());

        stmt.execute();
        stmt.close();
        if (!conn.isClosed()) {
            conn.close();
        }
    }

    @Override
    public List<ActividadpypVO> consultarActividadpyp(ActividadpypVO actividadpypVO) throws SQLException, NamingException {
        ConexionDb con = new ConexionDb();
        Connection conn;
        conn = con.traerConexion();

        List<ActividadpypVO> listActividadpypVO = new ArrayList<ActividadpypVO>();

        String condicion = "";


        if (actividadpypVO.getCodigo() == null) {
            actividadpypVO.setCodigo("");
        }
        if (actividadpypVO.getDescripcion() == null) {
            actividadpypVO.setDescripcion("");
        }


        if (!actividadpypVO.getCodigo().equals("") && actividadpypVO.getDescripcion().equals("")) {
            condicion = "WHERE tb_actividadpyp.codigo='" + actividadpypVO.getCodigo() + "'";
        } else if (!actividadpypVO.getDescripcion().equals("")) {
            condicion = "WHERE tb_actividadpyp.descripcion LIKE '%" + actividadpypVO.getDescripcion() + "%'";
        }



        String sql = "SELECT tb_actividadpyp.id, tb_actividadpyp.codigo,"
                + "tb_actividadpyp.descripcion, tb_actividadpyp.id_sexo,"
                + "tb_actividadpyp.id_grupo_quir, tb_actividadpyp.id_manual,"
                + "tb_actividadpyp.es_insumo,tb_actividadpyp.rip_rn,"
                + "tb_actividadpyp.rip_estancia, tb_actividadpyp.dos_vias,"
                + "tb_actividadpyp.cruenta,tb_actividadpyp.id_tipo_registro,"
                + "tb_actividadpyp.id_grupo_funcional,tb_actividadpyp.grupo_qx,"
                + "tb_actividadpyp.id_cum,tb_manual.descripcion manual,"
                + "tb_actividadpyp.id_actividad,tb_actividadpyp.id_diagnostico,tb_actividadpyp.cantidad_sesion"                                
                + " FROM tb_actividadpyp "
                + "LEFT JOIN tb_manual ON (tb_actividadpyp.id_manual = tb_manual.id) " + condicion;

        System.out.println("Sql buscar actividadpyp codigo: " + sql);

        PreparedStatement stmt = conn.prepareStatement(sql);
        try {
            ResultSet res = stmt.executeQuery();
            try {
                while (res.next()) {
                    actividadpypVO.setId(res.getInt("id"));
                    actividadpypVO.setCodigo(res.getString("codigo"));
                    actividadpypVO.setDescripcion(res.getString("descripcion"));
                    listActividadpypVO.add(actividadpypVO);

                }
            } finally {
                res.close();
            }
        } finally {
            stmt.close();
            if (!conn.isClosed()) {
                conn.close();
            }
        }

        return listActividadpypVO;

    }

    @Override
    public List<ActividadpypVO> consultarActividadpypAdm(String codigo, String descripcion, int programa) throws SQLException, NamingException {
        ConexionDb con = new ConexionDb();
        Connection conn;
        conn = con.traerConexion();

        List<ActividadpypVO> listActividadpypVO = new ArrayList<ActividadpypVO>();

        String condicion = "";

        if (!codigo.equals("") && descripcion.equals("")) {
            condicion = "WHERE tb_actividadpyp.codigo='" + codigo + "'";
        } else if (!descripcion.equals("")) {
            condicion = "WHERE tb_actividadpyp.descripcion LIKE '%" + descripcion + "%'";
        }

        if (programa > 0) {
            condicion = "WHERE tb_actividadpyp.id_programa=" + programa;
        }

        String sql = "SELECT id, id_programa, codigo, descripcion, id_sexo, id_fincn, id_finpx,"
                + "id_actcups, id_actsoat, frecuencia, habilitada, edad_inicio, edad_final, tiempo,"
                + "id_actividad,id_diagnostico,cantidad_sesion"                
                + " FROM tb_actividadpyp " + condicion;

        System.out.println("Sql buscar actividadpyp codigo: " + sql);

        PreparedStatement stmt = conn.prepareStatement(sql);
        try {
            ResultSet res = stmt.executeQuery();
            try {
                while (res.next()) {
                    ActividadpypVO actividadpypVO = new ActividadpypVO();
                    actividadpypVO.setId(res.getInt("id"));
                    actividadpypVO.setCodigo(res.getString("codigo"));
                    actividadpypVO.setDescripcion(res.getString("descripcion"));
                    listActividadpypVO.add(actividadpypVO);

                }
            } finally {
                res.close();
            }
        } finally {
            stmt.close();
            if (!conn.isClosed()) {
                conn.close();
            }
        }

        return listActividadpypVO;

    }

    @Override
    public List<ActividadpypVO> consultarConfiguracionActividadpypAdm(String codigo, String descripcion, int programa, String contrato, String edad, int sexo) throws SQLException, NamingException {
       
        ConexionDb con = new ConexionDb();
        Connection conn;
        conn = con.traerConexion();
        
        int sex= sexo;

        int intLnEdad = edad.length();

        int intEdad = (Integer.parseInt(edad.substring(0, intLnEdad - 1)));

        char chrMedEdad = edad.charAt(intLnEdad - 1);


        List<ActividadpypVO> listActividadpypVO = new ArrayList<ActividadpypVO>();

        String condicion = "";

        if (!codigo.equals("") && descripcion.equals("")) {
            condicion = "WHERE ac.codigo='" + codigo + "'";
        } else if (!descripcion.equals("")) {
            condicion = "WHERE ac.descripcion LIKE '%" + descripcion + "%'";
        }

        if (programa > 0) {
            condicion = "WHERE ap.id_programa=" + programa;
        }

        if (!condicion.equals("")) {
            condicion = condicion + " and ? between substring(ap.edad_inicio from 1 for char_length(ap.edad_inicio)-1)::integer"
                    + " AND Substring(ap.edad_final from 1 for char_length(ap.edad_final)-1)::integer"
                    + " AND substring(ap.edad_inicio from length(ap.edad_inicio) for 2 ) = ? and ap.id_sexo IN(3,?)"
                    + " AND cn.id_contrato=" + contrato;
        } else {
            condicion = "where ? between substring(ap.edad_inicio from 1 for char_length(ap.edad_inicio)-1)::integer"
                    + " AND Substring(ap.edad_final from 1 for char_length(ap.edad_final)-1)::integer"
                    + " AND substring(ap.edad_inicio from length(ap.edad_inicio) for 2 ) = ? and ap.id_sexo IN(3,?)"
                    + " AND cn.id_contrato=" + contrato;
        }

        String sql = "SELECT ac.id, ap.id_programa, ac.codigo, ac.descripcion, ap.id_sexo, ap.id_fincn, ap.id_finpx,"
                + " ap.id_actcups, ap.id_actsoat, ap.frecuencia, ap.edad_inicio, ap.edad_final, ap.cantidad, ap.tiempo,"
                + " ap.cantidad_sesion, ap.id_diagnostico, ac.id_grupo_funcional, ac.id_tipo_registro, ac.habilitada"
                + " FROM  tb_actividad ac"
                + " inner join tb_actividadpyp ap on(ap.id_actividad = ac.id)"
                + " LEFT JOIN tb_manual mn ON (ac.id_manual = mn.id)"
                + " INNER JOIN tb_contrato_actividad cn ON (ac.id = cn.id_actividad)" + condicion;

        System.out.println("Sql buscar actividadpyp codigo: " + sql);
        System.out.println("Sql buscar actividadpyp codigo: " + sexo);


        PreparedStatement stmt = conn.prepareStatement(sql);
        
        stmt.setInt(1, intEdad); 
        stmt.setString(2, String.valueOf(chrMedEdad)); 
        stmt.setInt(3, sex);
       
       

        try {
            ResultSet res = stmt.executeQuery();
            try {

                while (res.next()) {
                    ActividadpypVO actividadpypVO = new ActividadpypVO();
                    actividadpypVO.setId(res.getInt("id"));
                    actividadpypVO.setCodigo(res.getString("codigo"));
                    actividadpypVO.setDescripcion(res.getString("descripcion"));
                    actividadpypVO.setIdgrupoActividad(res.getInt("id_grupo_funcional"));
                    actividadpypVO.setIdtiporegistro(res.getInt("id_tipo_registro"));                    
                    actividadpypVO.setSexo(res.getInt("id_sexo"));
                    actividadpypVO.setPrograma(res.getInt("id_programa"));
                    actividadpypVO.setIdfincn(res.getInt("id_fincn")); 
                    actividadpypVO.setIdfinpx(res.getInt("id_finpx"));                    
                    actividadpypVO.setIdfincn(res.getInt("id_actcups")); 
                    actividadpypVO.setIdfinpx(res.getInt("id_actsoat"));                   
                    actividadpypVO.setIddiagnostico(res.getInt("id_diagnostico")); 
                    actividadpypVO.setCantidadsesion(res.getInt("cantidad_sesion")); 
                    actividadpypVO.setHabilitada(res.getBoolean("habilitada"));
                    
                    listActividadpypVO.add(actividadpypVO);

                }
            } finally {
                res.close();
            }
        } finally {
            stmt.close();
            if (!conn.isClosed()) {
                conn.close();
            }
        }

        return listActividadpypVO;
    }
    
    
@Override
public ActividadpypVO consultarConfiguracionActividadpypAdmCod(String idcontrato, String edad, int idsexo, int idactividad) throws SQLException, NamingException {
       
        ConexionDb con = new ConexionDb();
        Connection conn;
        conn = con.traerConexion();
        
        ActividadpypVO actividadpypVO = new ActividadpypVO();
        
        int sex= idsexo;

        int intLnEdad = edad.length();

        int intEdad = (Integer.parseInt(edad.substring(0, intLnEdad - 1)));

        char chrMedEdad = edad.charAt(intLnEdad - 1);

        String condicion = "";

            condicion = "where ? between substring(ap.edad_inicio from 1 for char_length(ap.edad_inicio)-1)::integer"
                    + " AND Substring(ap.edad_final from 1 for char_length(ap.edad_final)-1)::integer"
                    + " AND substring(ap.edad_inicio from length(ap.edad_inicio) for 2 ) = ? and ap.id_sexo IN(3,?)"
                    + " AND cn.id_contrato=" + idcontrato+" AND ap.id_actividad = "+idactividad;

        String sql = "SELECT ac.id, ap.id_programa, ac.codigo, ac.descripcion, ap.id_sexo, ap.id_fincn, ap.id_finpx,"
                + " ap.id_actcups, ap.id_actsoat, ap.frecuencia, ap.edad_inicio, ap.edad_final, ap.cantidad, ap.tiempo,"
                + " ap.cantidad_sesion, ap.id_diagnostico, ac.id_grupo_funcional, ac.id_tipo_registro, ac.id_tiposervicio, ac.habilitada"
                + " FROM  tb_actividad ac"
                + " inner join tb_actividadpyp ap on(ap.id_actividad = ac.id)"
                + " LEFT JOIN tb_manual mn ON (ac.id_manual = mn.id)"
                + " INNER JOIN tb_contrato_actividad cn ON (ac.id = cn.id_actividad)" + condicion;

        System.out.println("Sql buscar actividadpyp codigo: " + sql);


        PreparedStatement stmt = conn.prepareStatement(sql);
        
        stmt.setInt(1, intEdad); 
        stmt.setString(2, String.valueOf(chrMedEdad)); 
        stmt.setInt(3, sex);
              
        try {
            ResultSet res = stmt.executeQuery();           
                if (res.next()) {
                    actividadpypVO.setId(res.getInt("id"));
                    actividadpypVO.setCodigo(res.getString("codigo"));
                    actividadpypVO.setDescripcion(res.getString("descripcion"));
                    actividadpypVO.setIdgrupoActividad(res.getInt("id_grupo_funcional"));
                    actividadpypVO.setIdtiporegistro(res.getInt("id_tipo_registro"));                    
                    actividadpypVO.setPrograma(res.getInt("id_programa"));
                    actividadpypVO.setIdfincn(res.getInt("id_fincn")); 
                    actividadpypVO.setIdfinpx(res.getInt("id_finpx")); 
                    actividadpypVO.setIddiagnostico(res.getInt("id_diagnostico")); 
                    actividadpypVO.setCantidadsesion(res.getInt("cantidad_sesion")); 
                    actividadpypVO.setCantidadsesion(res.getInt("id_tiposervicio")); 
                    
                    
                }
            
        } finally {
            stmt.close();
            if (!conn.isClosed()) {
                conn.close();
            }
        }
        
        return actividadpypVO;
    }

    @Override
    public List<ActividadpypVO> consultarActividadpypBuscador(String codigo, String descripcion, String idcto) throws SQLException, NamingException {
        ConexionDb con = new ConexionDb();
        Connection conn;
        conn = con.traerConexion();

        List<ActividadpypVO> listActividadpypVO = new ArrayList<ActividadpypVO>();

        String condicion = "";



        if (!codigo.equals("") && descripcion.equals("")) {
            condicion = "WHERE tb_actividadpyp.codigo='" + codigo + "'";
        } else if (!descripcion.equals("")) {
            condicion = "WHERE tb_actividadpyp.descripcion LIKE '%" + descripcion + "%'";
        }

        
        String sql = "SELECT tb_actividadpyp.id, tb_actividadpyp.codigo,"
                + "tb_actividadpyp.descripcion, tb_actividadpyp.id_sexo,"
                + "tb_actividadpyp.id_actcups, tb_actividadpyp.id_actsoat,"
                + "tb_actividad.id_grupo_quir, tb_actividad.id_manual,"
                + "tb_actividad.es_insumo,tb_actividad.rip_rn,"
                + "tb_actividad.rip_estancia, tb_actividad.dos_vias,"
                + "tb_actividad.cruenta,tb_actividad.id_tipo_registro,"
                + "tb_actividad.id_grupo_funcional,tb_actividad.grupo_qx,"
                + "tb_actividad.id_cum,tb_manual.descripcion manual,"
                + "tb_actividadpyp.id_diagnostico,tb_actividadpyp.cantidad_sesion"                
                + " FROM tb_actividad "
                + "LEFT JOIN tb_manual ON (tb_actividad.id_manual = tb_manual.id) "
                + "INNER JOIN tb_actividadpyp ON (tb_actividadpyp.id_actividad = tb_actividad.id) "
                + "INNER JOIN tb_contrato_actividadpyp ON (tb_actividadpyp.id_actividad = tb_contrato_actividadpyp.id_actividadpyp) "
                + condicion + " AND tb_contrato_actividadpyp.id_contrato=" + idcto;

        System.out.println("Sql buscar actividadpyp codigo: " + sql);

        PreparedStatement stmt = conn.prepareStatement(sql);
        try {
            ResultSet res = stmt.executeQuery();
            try {
                while (res.next()) {
                    ActividadpypVO actividadpypVO = new ActividadpypVO();
                    actividadpypVO.setId(res.getInt("id"));
                    actividadpypVO.setCodigo(res.getString("codigo"));
                    actividadpypVO.setDescripcion(res.getString("descripcion"));
                    listActividadpypVO.add(actividadpypVO);

                }
            } finally {
                res.close();
            }
        } finally {
            stmt.close();
            if (!conn.isClosed()) {
                conn.close();
            }
        }

        return listActividadpypVO;
    }

    @Override
    public String borrarActividadpyp(int id) throws SQLException, NamingException {
        ConexionDb con = new ConexionDb();
        Connection conn;
        conn = con.traerConexion();


        System.out.println("Id a eliminar:" + id);

        String sql = "delete from tb_actividadpyp where tb_actividadpyp.id=?";

        PreparedStatement stmt = conn.prepareStatement(sql);
        stmt.setInt(1, id);

        stmt.execute();
        stmt.close();

        return "okborrar";
    }

    @Override
    public List<ActividadpypVO> consultarActividadpypes() {
        List<ActividadpypVO> listActividadpypVO = new ArrayList<ActividadpypVO>();
        try {
            ConexionDb con = new ConexionDb();
            Connection conn;
            conn = con.traerConexion();

            String inner = "";

            inner = "INNER JOIN tb_grupoactividad on (tb_actividad.id_grupo_funcional=tb_grupoactividad.id)"
                    +" INNER JOIN tb_actividadpyp on (tb_actividadpyp.id_actividad = tb_actividadpyp.id)" ;


            String sql = "SELECT tb_actividadpyp.id, tb_actividadpyp.codigo, tb_actividadpyp.descripcion,"
                    + " tb_actividadpyp.id_sexo, tb_actividadpyp.id_grupo_quir, tb_actividad.id_manual, tb_actividad.es_insumo,"
                    + " tb_actividad.rip_rn, tb_actividad.rip_estancia, tb_actividad.dos_vias,"
                    + " tb_actividad.cruenta, tb_actividad.id_tipo_registro, tb_actividad.id_grupo_funcional,"
                    + " tb_actividad.grupo_qx, tb_actividad.id_cum, tb_grupoactividad.descripcion as descgrupo,tb_actividadpyp.habilitada,"
                    + " tb_actividadpyp.id_actividad, tb_actividadpyp.id_diagnostico, tb_actividadpyp.cantidad_sesion FROM tb_actividad " + inner;



            /*
             * String sql = "SELECT id, codigo, descripcion, id_sexo,
             * id_grupo_quir, id_manual, es_insumo," + "rip_rn, rip_estancia,
             * dos_vias, cruenta, id_tipo_registro, id_grupo_funcional,"
             * +"grupo_qx, id_cum" + " FROM tb_actividadpyp";
             */


            System.out.println("Sql buacar act: " + sql);
            PreparedStatement stmt = conn.prepareStatement(sql);

            try {
                ResultSet res = stmt.executeQuery();
                try {
                    while (res.next()) {
                        ActividadpypVO actividadpypVO = new ActividadpypVO();
                        actividadpypVO.setId(res.getInt("id"));
                        actividadpypVO.setCodigo(res.getString("codigo"));
                        actividadpypVO.setDescripcion(res.getString("descripcion"));
                        listActividadpypVO.add(actividadpypVO);
                    }
                } finally {
                    res.close();
                }
            } finally {
                stmt.close();
                if (!conn.isClosed()) {
                    conn.close();
                }
            }



        } catch (NamingException ex) {
            Logger.getLogger(ActividadpypDAO.class.getName()).log(Level.SEVERE, null, ex);
        } catch (SQLException ex) {
            Logger.getLogger(ActividadpypDAO.class.getName()).log(Level.SEVERE, null, ex);
        }
        return listActividadpypVO;
    }

    @Override
    public ActividadpypVO getActividadpyp(int id) throws SQLException, NamingException {
        ConexionDb con = new ConexionDb();
        Connection conn;
        conn = con.traerConexion();



        String sql = "SELECT * FROM tb_actividadpyp WHERE tb_actividadpyp.id =" + id;

        System.out.println("Sql BUSCAR ACTIVIDADpyp POR ID: " + sql);

        PreparedStatement stmt = conn.prepareStatement(sql);
        ResultSet res = stmt.executeQuery();

        ActividadpypVO actividadpypVO = new ActividadpypVO();

        if (res.next()) {
            actividadpypVO.setId(res.getInt("id"));
            actividadpypVO.setCodigo(res.getString("codigo"));
            actividadpypVO.setDescripcion(res.getString("descripcion"));
            actividadpypVO.setSexo(res.getInt("id_sexo"));

            actividadpypVO.setFrecuencia(res.getInt("frecuencia"));
            actividadpypVO.setIdcups(res.getInt("id_actcups"));
            actividadpypVO.setIdsoat(res.getInt("id_actsoat"));
            actividadpypVO.setPrograma(res.getInt("id_programa"));

            actividadpypVO.setIdfincn(res.getInt("id_fincn"));
            actividadpypVO.setIdfinpx(res.getInt("id_finpx"));

            actividadpypVO.setHabilitada(res.getBoolean("habilitada"));
            
            actividadpypVO.setIdactividad(res.getInt("id_actividad"));
            actividadpypVO.setIddiagnostico(res.getInt("id_diagnostico"));
            actividadpypVO.setCantidadsesion(res.getInt("cantidad_sesion"));
            
            
            
            String ei = res.getString("edad_inicio");
            String tiempo = res.getString("tiempo");


            if (!(ei == null)) {
                int n1 = res.getString("edad_inicio").length();
                int n2 = res.getString("edad_final").length();
                actividadpypVO.setEdadini(Integer.parseInt(res.getString("edad_inicio").substring(0, n1 - 1)));
                actividadpypVO.setMedida1(res.getString("edad_inicio").charAt(n1 - 1));

                actividadpypVO.setEdadfin(Integer.parseInt(res.getString("edad_final").substring(0, n2 - 1)));
                actividadpypVO.setMedida2(res.getString("edad_final").charAt(n1 - 1));
            }


            if (!(tiempo == null)) {
                int t1 = res.getString("tiempo").length();
                actividadpypVO.setCantidad(Integer.parseInt(res.getString("tiempo").substring(0, t1 - 1)));
                actividadpypVO.setTiempo(res.getString("tiempo").charAt(t1 - 1));
            }



        }

        res.close();
        stmt.close();
        if (!conn.isClosed()) {
            conn.close();
        }
        return actividadpypVO;


    }

    @Override
    public void guardarActividadpypEdit(ActividadpypVO actividadpypVO) throws SQLException, NamingException {
        ConexionDb con = new ConexionDb();
        Connection conn;
        conn = con.traerConexion();
        String sql = "UPDATE tb_actividadpyp"
                + " SET codigo=?, descripcion=?, id_sexo=?,id_programa=?, id_fincn=?,"
                + "id_finpx=?, id_actcups=?, id_actsoat=?, frecuencia=?, habilitada=?,"
                + "edad_inicio=?, edad_final=?, tiempo=?,"
                + "id_actividad=?, id_diagnostico=?, cantidad_sesion=?"
                + " WHERE tb_actividadpyp.id=" + actividadpypVO.getId();

        System.out.println("SQL del Update=" + sql);

        PreparedStatement stmt = conn.prepareStatement(sql);

        int habilitada = (actividadpypVO.isHabilitada() == true) ? 1 : 0;

        stmt.setString(1, actividadpypVO.getCodigo());
        stmt.setString(2, actividadpypVO.getDescripcion());
        stmt.setInt(3, actividadpypVO.getSexo());
        stmt.setInt(4, actividadpypVO.getPrograma());
        stmt.setInt(5, actividadpypVO.getIdfincn());
        stmt.setInt(6, actividadpypVO.getIdfinpx());
        stmt.setInt(7, actividadpypVO.getIdcups());
        stmt.setInt(8, actividadpypVO.getIdsoat());
        stmt.setInt(9, actividadpypVO.getFrecuencia());
        stmt.setInt(10, habilitada);
        stmt.setString(11, String.valueOf(actividadpypVO.getEdadini()) + actividadpypVO.getMedida1());
        stmt.setString(12, String.valueOf(actividadpypVO.getEdadfin()) + actividadpypVO.getMedida2());
        stmt.setString(13, String.valueOf(actividadpypVO.getCantidad()) + actividadpypVO.getTiempo());
        stmt.setInt(14, actividadpypVO.getIdactividad());
        stmt.setInt(15, actividadpypVO.getIddiagnostico());
        stmt.setInt(14, actividadpypVO.getCantidadsesion());
        

        stmt.execute();
        stmt.close();
        if (!conn.isClosed()) {
            conn.close();
        }
    }

    @Override
    public void eliminarActividadpyp(ActividadpypVO actividadpypSeleccionada) throws SQLException, NamingException {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    @Override
    public List<ActividadpypVO> consultarActividadpypBuscadorTarifas(String codigo, String descripcion, String manual) throws SQLException, NamingException {
        ConexionDb con = new ConexionDb();
        Connection conn;
        conn = con.traerConexion();

        List<ActividadpypVO> listActividadpypVO = new ArrayList<ActividadpypVO>();

        String condicion = "";



        if (!codigo.equals("") && descripcion.equals("")) {
            condicion = "WHERE tb_actividadpyp.codigo='" + codigo + "'";
        } else if (!descripcion.equals("")) {
            condicion = "WHERE tb_actividadpyp.descripcion LIKE '%" + descripcion + "%'";
        }



        String sql = "SELECT tb_actividadpyp.id, tb_actividadpyp.codigo,"
                + "tb_actividadpyp.descripcion,tb_manual.descripcion manual,"
                + "tb_tarifa.valor"
                + " FROM tb_tarifa "
                + "INNER JOIN tb_actividadpyp ON (tb_tarifa.id_actividadpyp = tb_actividadpyp.id)"
                + "INNER JOIN tb_manual ON (tb_tarifa.id_manual = tb_manual.id) " + condicion
                + " AND tb_manual.id = " + manual;

        System.out.println("Sql buscar actividadpyp codigo: " + sql);

        PreparedStatement stmt = conn.prepareStatement(sql);
        try {
            ResultSet res = stmt.executeQuery();
            try {
                while (res.next()) {
                    ActividadpypVO actividadpypVO = new ActividadpypVO();
                    actividadpypVO.setId(res.getInt("id"));
                    actividadpypVO.setCodigo(res.getString("codigo"));
                    actividadpypVO.setDescripcion(res.getString("descripcion"));
                    listActividadpypVO.add(actividadpypVO);

                }
            } finally {
                res.close();
            }
        } finally {
            stmt.close();
            if (!conn.isClosed()) {
                conn.close();
            }
        }

        return listActividadpypVO;
    }

    @Override
    public float consultarTarifa(String manual, String idact) throws SQLException, NamingException {
        ConexionDb con = new ConexionDb();
        Connection conn;
        conn = con.traerConexion();

        float valor = 0;

        String condicion = "";

        String sql = "SELECT tb_tarifa.valor"
                + " FROM tb_tarifa "
                + "WHERE tb_tarifa.id_actividadpyp =" + idact + " AND tb_tarifa.id_manual = " + manual;

        System.out.println("Sql buscar actividadpyp codigo: " + sql);

        PreparedStatement stmt = conn.prepareStatement(sql);
        try {
            ResultSet res = stmt.executeQuery();
            try {
                if (res.next()) {
                    valor = res.getFloat("valor");
                }
            } finally {
                res.close();
            }
        } finally {
            stmt.close();
            if (!conn.isClosed()) {
                conn.close();
            }
        }

        return valor;
    }

    @Override
    public ActividadpypVO consultarActividadpyp(String codact, String idcto) throws SQLException, NamingException {
        ConexionDb con = new ConexionDb();
        Connection conn;
        conn = con.traerConexion();

        String condicion = "WHERE tb_actividadpyp.codigo='" + codact + "'";

        String sql = "SELECT tb_actividadpyp.id, tb_actividadpyp.codigo,"
                + "tb_actividadpyp.descripcion, tb_actividadpyp.id_sexo,"
                + "tb_actividadpyp.id_grupo_quir, tb_actividadpyp.id_manual,"
                + "tb_actividadpyp.es_insumo,tb_actividadpyp.rip_rn,"
                + "tb_actividadpyp.rip_estancia, tb_actividadpyp.dos_vias,"
                + "tb_actividadpyp.cruenta,tb_actividadpyp.id_tipo_registro,"
                + "tb_actividadpyp.id_grupo_funcional,tb_actividadpyp.grupo_qx,"
                + "tb_actividadpyp.id_cum,tb_manual.descripcion manual,"
                + "tb_actividadpyp.id_actividad,tb_actividadpyp.id_diagnostico,tb_actividadpyp.cantidad_sesion"
                + " FROM tb_actividadpyp "
                + "LEFT JOIN tb_manual ON (tb_actividadpyp.id_manual = tb_manual.id) "
                + "INNER JOIN tb_contrato_actividadpyp ON (tb_actividadpyp.id = tb_contrato_actividadpyp.id_actividadpyp) "
                + condicion + " AND tb_contrato_actividadpyp.id_contrato=" + idcto;

        System.out.println("Sql BUSCAR ACTIVIDAD POR ID: " + sql);

        PreparedStatement stmt = conn.prepareStatement(sql);
        ResultSet res = stmt.executeQuery();

        ActividadpypVO actividadpypVO = new ActividadpypVO();

        if (res.next()) {
            actividadpypVO.setId(res.getInt("id"));
            actividadpypVO.setCodigo(res.getString("codigo"));
            actividadpypVO.setDescripcion(res.getString("descripcion"));

        }

        res.close();
        stmt.close();
        if (!conn.isClosed()) {
            conn.close();
        }
        return actividadpypVO;
    }

    @Override
    public int getCantActividadespyp(String $sWhere) throws SQLException, NamingException {
        ConexionDb con = new ConexionDb();
        Connection conn;
        conn = con.traerConexion();
        int count = 0;

        String sql = "SELECT count(*) FROM tb_actividadpyp";

        PreparedStatement stmt = conn.prepareStatement(sql);

        try {
            ResultSet res = stmt.executeQuery();
            try {
                if (res.next()) {
                    count = res.getInt(1);
                }
            } finally {
                res.close();
            }
        } finally {
            stmt.close();
            if (!conn.isClosed()) {
                conn.close();
            }
        }

        return count;
    }

    @Override
    public List<ActividadpypVO> getActividadespyp(int displayStart, int displayLength, String $sWhere, String orden) throws SQLException, NamingException {
        ConexionDb con = new ConexionDb();
        Connection conn;
        conn = con.traerConexion();

        List<ActividadpypVO> lista = new ArrayList<ActividadpypVO>();
        String condicion = "";

        if (!$sWhere.equals("")) {
            //condicion = " WHERE tb_factura.numero LIKE '%"+param+"%' ";
            condicion = $sWhere;
        }



        String sql = "SELECT "
                + " tb_actividadpyp.id, "
                + " tb_actividadpyp.codigo, "
                + " tb_actividadpyp.descripcion, "
                + " tb_programapyp.descripcion programa"
                + " FROM tb_actividadpyp "
                + " INNER JOIN tb_programapyp ON (tb_actividadpyp.id_programa = tb_programapyp.id) "
                + " " + condicion + " " + orden + " LIMIT " + displayLength + " OFFSET " + displayStart;

        System.out.println("Sql BUSCAR ACTIVIDADPYP POR ID: " + sql);


        PreparedStatement stmt = conn.prepareStatement(sql);


        try {
            ResultSet res = stmt.executeQuery();
            try {
                while (res.next()) {
                    ActividadpypVO objVO = new ActividadpypVO();
                    objVO.setId(res.getInt("id"));
                    objVO.setCodigo(res.getString("codigo"));
                    objVO.setDescripcion(res.getString("descripcion"));
                    objVO.setDesprograma(res.getString("programa"));
                    lista.add(objVO);
                }
            } finally {
                res.close();
            }
        } finally {
            stmt.close();
            if (!conn.isClosed()) {
                conn.close();
            }
        }

        return lista;
    }
}